package com.joinlabs.service;

import java.math.BigDecimal;
import java.util.List;

import com.joinlabs.entity.Address;
import com.joinlabs.entity.Enshrine;
import com.joinlabs.entity.User;
import com.joinlabs.entity.Wares;
import com.joinlabs.exception.CustomException;

public interface IUserService {

	User checkLogin(User user) throws CustomException;
	
	/**
	 * 	验证手机号
	 * @param phone	手机号
	 * @return
	 */
	boolean verPhone(String phone);
	
	/**
	 * 	验证用户名
	 * @param surname 用户名
	 * @return
	 */
	boolean verUsername(String username);
	
	/**
	 * 	验证密保答案
	 * @param phone 手机号
	 * @return
	 */
	boolean verAnswer(String answer,String phone);
	
	/**
	 *  更新个人信息
	 * @param user 用户信息
	 */
	void updateInfo(User user);
	
	public void userregister(String userId,String userName,String userPassword,
			String userSurname,String userPhone,String userAddress,String bankId,
			int userPart,String userGender,long userAge,String userQuestion,
			String userAnswer,String userImg);//注册方法
	
	public User select(String userName);//查询用户是否存在

	User selectuserlogin(String userPhone, String userPassword, int userPart);

	User selectadminlogin(String userPhone, String userPassword, int userPart);
	
	public User checkphone(String userPhone);//查询手机号是否已被使用
	
	void setpassword(String userPhone,String userPassword);//修改密码
	
	/**
	 *	更新用户头像信息
	 * @param user 用户信息
	 */
	void updateUserImg(String fileName,User user);
	
	/**
	 * 	查询用户收货地址
	 * @param userId 用户Id
	 * @return
	 */
	List<Address> selectAddressByUserId(String userId);
	
	/**
	 * 	删除收货地址
	 * @param zyAid 地址Id
	 * @return
	 */
	int deleteAddrByAid(Long zyAid);
	
	/**
	 * 	通过用户添加收货地址
	 * @param address
	 */
	void addAddressByUserId(Address address);
	
	/**
	 * 	通过地址ID更新用户收货地址
	 */
	void updateAddressById(Address address);
	
	/**
	 * 	通过用户查询收藏列表
	 * @param userId
	 * @return
	 */
	List<Wares> selectEnshrineByUserId(String userId);
	
	/**
	 * 	取消收藏
	 * @return
	 */
	int deleteCollect(String userId,BigDecimal waresId);
}
